Multicast implementations in enterprise servers generally fall into two categories: unreliable and reliable. Unreliable implementations, as might be expected given the name, are used in applications where it is okay if content is missed by the receiver. An example of this is a broadcast of a company meeting. If a client device misses a packet, the video/audio may skip a little, but the server should not have to resend the packet—the client's receipt of the one missed packet is not critical. Reliable implementations, by contrast, are used in applications where it is mandatory that the client device receive the entire transmission. An example of this is distribution of a security hot fix or patch. If a client misses a portion of the transmission, the client may have received an incomplete hot fix and thus still be vulnerable to the security flaw.
In the standard implementations of reliable multicast in use today, content is sent in order over the network connection. All clients must connect to the point of transmission and proceed with the download in step with each other. With typical multicast implementation methodologies, there is no mechanism for clients to join an in-progress session late. For example, an administrator who wants to multicast content to 15 client devices creates a session on the server. Fifteen clients join the session before it begins. The administrator then starts the session and data starts transferring. A 16th Client Now requests to join the in-progress session but is unable to do so because joining the client after the session starts would mean that the late joining client would miss all of the content sent before it joined. Also, a slow client drags down the performance of the entire session. Since all clients will receive the content at the same time, the content can only be streamed at the rate that the slowest client can still process the data (in order to avoid loss).